package com.pro.controller;

import com.pro.pojo.*;
import com.pro.service.DepartmentService;
import com.pro.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

/**
 * @author ：刘弘禹
 * @description：TODO
 * @date ：2022/1/12 8:56
 */
@Controller
@RequestMapping("/Department")
public class DepartmentController {
    @Autowired
    private DepartmentService departmentService;

    /**
     * 查询部门列表
     *@param jsDept
     *  部门信息，根据信息筛选对应数据返回
     *@return 返回部门列表集合
     * @author 刘弘禹
     * @Time 2022-1-11 15:53
     */

    @RequestMapping("/queryDept")
    @ResponseBody
    public JsonData queryDept(JsDept jsDept){
        List<JsDept> jsDepts = departmentService.queryDept(jsDept);
        return jsDepts != null ? JsonData.buildSuccess(jsDepts):JsonData.buildError("服务器错误");
    }

    /**
     * 查询部门列表
     *@param jsDept
     *  更具id修改部门状态
     *@return 返回状态修改是否成功
     * @author 刘弘禹
     * @Time 2022-1-12 16:02:20
     */
    @RequestMapping("/updateDeptStatus")
    @ResponseBody
    public JsonData updateDeptStatus(JsDept jsDept){
        Boolean bol = departmentService.updateDeptStatus(jsDept);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 修改部门名称和信息
     *@param jsDept
     *  跟具id修改部门信息
     *@return 返回状态修改是否成功
     * @author 刘弘禹
     * @Time 2022-1-12 18:46:30
     */
    @RequestMapping("/updateDept")
    @ResponseBody
    public JsonData updateDept(JsDept jsDept){
        Boolean bol = departmentService.updateDept(jsDept);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 添加部门
     *@param jsDept
     *  添加一个部门
     *@return 返回状态修改是否成功
     * @author 刘弘禹
     * @Time 2022-1-12 20:31:33
     */
    @RequestMapping(value = "/addDept",method = RequestMethod.POST)
    @ResponseBody
    public JsonData addDept(JsDept jsDept){
        Boolean bol = departmentService.addDept(jsDept);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 查询后台人员
     *@param jsUser
     *  查询所有后台人员
     *@return 返回所有后台人员列表
     * @author 刘弘禹
     * @Time 2022-1-13 19:46:05
     */
    @RequestMapping("/getJsUser")
    @ResponseBody
    public JsonData getJsUser(JsUser jsUser) {
        System.err.println(jsUser);
        List<JsUser> jsUsers = departmentService.getJsUser(jsUser);
        return jsUsers != null ? JsonData.buildSuccess(jsUsers):JsonData.buildError("服务器错误");
    }


    /**
     * 查询后台部门
     *@param jsDept
     *  查询所有后台部门
     *@return 返回所有后台部门列表
     * @author 刘弘禹
     * @Time 2022-1-14 9:01:22
     */

    @RequestMapping("/personnelDepartment")
    @ResponseBody
    public JsonData personnelDepartment(JsDept jsDept){
        List<JsDept> jsDepts = departmentService.queryDept(jsDept);
        JsDept rootNode = new JsDept();
        rootNode.setId(0);
        rootNode.setDeptName("所有部门");
        rootNode.setParentId(-1);
        jsDepts.add(rootNode);
        return jsDepts != null ? JsonData.buildSuccess(jsDepts):JsonData.buildError("服务器错误");
    }

    /**
     * 查询一个后台人员详细信息
     *@param id
     *  根据id查询一个后台人员详细信息
     *@return 返回一个后台人员信息
     * @author 刘弘禹
     * @Time 2022-1-14 14:20:33
     */

    @RequestMapping("/getJsUserOn")
    @ResponseBody
    public JsonData getJsUserOn(Integer id) {
        JsUser jsUserOn = departmentService.getJsUserOn(id);
        return jsUserOn != null ? JsonData.buildSuccess(jsUserOn):JsonData.buildError("服务器错误");
    }

    /**
     * 查询后台人员权限信息
     *@param id
     *  根据id查询一个后台人员权限信息
     *@return 返回一个后台人员权限信息
     * @author 刘弘禹
     * @Time 2022-1-15 13:42:12
     */
    @RequestMapping("/getPermission")
    @ResponseBody
    public JsonData getPermission(Integer id) {
        List<Integer> permission = departmentService.getPermission(id);
        return permission != null ? JsonData.buildSuccess(permission):JsonData.buildError("服务器错误");
    }

    /**
     * 删除后台人员权限
     *@param userId,deptId
     *  删除权限信息
     *@return 返回是否成功
     * @author 刘弘禹
     * @Time 2022-1-15 15:28:12
     */
    @RequestMapping("/deleteJurisdiction")
    @ResponseBody
    public JsonData deleteJurisdiction(Integer userId, Integer deptId) {
        Boolean bol = departmentService.deleteJurisdiction(userId, deptId);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 添加后台人员权限
     *@param userId,deptId
     *  添加权限信息
     *@return 返回是否成功
     * @author 刘弘禹
     * @Time 2022-1-15 15:35:12
     */
    @RequestMapping("/addJurisdiction")
    @ResponseBody
    public JsonData addJurisdiction(Integer userId, Integer deptId) {
        Boolean bol = departmentService.addJurisdiction(userId, deptId);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 添加后台用户
     *@param jsUser
     *  添加后台用户
     *@return 返回是否成功
     * @author 刘弘禹
     * @Time 2022-1-18 14:22:10
     */
    @RequestMapping("/addUser")
    @ResponseBody
    public JsonData addUser(JsUser jsUser) {
        Boolean bol = departmentService.addUser(jsUser);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 获取部门信息
     *@return 返回部门信息
     * @author 刘弘禹
     * @Time 2022-1-18 20:10:12
     */
    @RequestMapping("/getZtree")
    @ResponseBody
    public JsonData getZtree() {
        List<JsDept> ztree = departmentService.getZtree();
        System.err.println(ztree);
        return ztree != null ? JsonData.buildSuccess(ztree):JsonData.buildError("服务器错误");
    }


    /**
     * 获取后台用户信息
     *@param userId
     *  获取后台用户信息
     *@return 返回后台用户
     * @author 刘弘禹
     * @Time 2022-1-20 21:08:10
     */
    @RequestMapping("/getUserById")
    @ResponseBody
    public JsonData getUserById(Integer userId) {
        JsUser userById = departmentService.getUserById(userId);
        return userById != null ? JsonData.buildSuccess(userById):JsonData.buildError("服务器错误");
    }

    /**
     * 修改后台用户信息
     *@param jsUser
     *  修改后台用户信息
     *@return 返回是否成功
     * @author 刘弘禹
     * @Time 2022-1-20 21:30:22
     */
    @RequestMapping("/editUserById")
    @ResponseBody
    public JsonData editUserById(JsUser jsUser) {
        Boolean bol = departmentService.editUserById(jsUser);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 查询封停日志
     *@return 返回封停日志信息
     * @author 刘弘禹
     * @Time 2022-1-21 20:35:12
     */
    @RequestMapping("/getUnsealList")
    @ResponseBody
    public JsonData getUnsealList() {
        List<Unseal> unsealList = departmentService.getUnsealList();
        System.err.println(unsealList);
        return unsealList != null ? JsonData.buildSuccess(unsealList):JsonData.buildError("服务器错误");
    }

    /**
     * 查询封停日志
     *@return 返回封停日志信息
     * @author 刘弘禹
     * @Time 2022-2-8 14:03:22
     */
    @RequestMapping("/updateEnable")
    @ResponseBody
    public JsonData updateEnable(Integer id, Integer enabled) {
        Boolean bol = departmentService.updateEnable(id, enabled);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 删除后台部门
     *@return 删除后台部门
     * @author 刘弘禹
     * @Time 2022-2-9 11:28:22
     */
    @RequestMapping("/removeDept")
    @ResponseBody
    public JsonData removeDept(Integer id) {
        Boolean bol = departmentService.removeDept(id);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }

    /**
     * 账号封停
     *@return 账号封停
     * @author 刘弘禹
     * @Time 2022-2-9 14:48:22
     */
    @RequestMapping("/updateUserType")
    @ResponseBody
    public JsonData updateUserType(JsClosure jsClosure) {
        jsClosure.setType(3);
        jsClosure.setStartDate(DateUtils.transDate(new Date()));

        //获取结束时间
        Calendar calendar = new GregorianCalendar();
        calendar.setTime((Date)new Date()); //类型转换
        calendar.add(calendar.DATE,jsClosure.getDays());//增加30天
        Date endDate=calendar.getTime();
        jsClosure.setEndDate(DateUtils.transDate(endDate));

        jsClosure.setRemarks("后台封停");
        jsClosure.setStatus(3);


        Boolean bol = departmentService.updateUserType(jsClosure);
        return bol != null ? JsonData.buildSuccess(bol):JsonData.buildError("服务器错误");
    }
}
